202. 快乐数

202. 快乐数

Similar Question

leading to the advanced question

Solution Tips

方案一: 哈希表

p97ukzF.png

var isHappy = function(n) {
    // 用 哈希表记录操作过的组合, 如果已经出现过就不要再操作了, 死循环 return false
    // 有没有可能一直出现的都是新的数, 但是也一直变不到 1 呢?
    function getNext( n) {
        let totalSum = 0;
        while (n > 0) {
            const d = n % 10;
            n = Math.floor(n / 10);
            totalSum += d * d;
        }
        return totalSum;
    }

    const seen = {};
    while (n != 1 && !seen[n]) {
        seen[n] = true;
        n = getNext(n);
    }
    return n == 1;
};

方案二: 快慢指针